In a typical binary signaling system, each conductor in the transmission system can have one of two states: zero or one. In this type of system, each conductor transmits one bit of data at a time. A multi-level signaling system transmits data across a multiple conductors using several possible signal levels on each conductor. For example, a 4-PAM (4-level Pulse Amplitude Modulation) transmission system provides four different signal levels (i.e., four different symbols) on each conductor instead of two levels, as used in a binary system. The use of four different signal levels allows two bits of data to be transmitted across a single conductor simultaneously.
In a 4-PAM transmission system that uses current-based output drivers, the four different signal levels are represented by different current values. For example, the four different current levels may be identified as 0i, 1i, 2i, and 3i. Similarly, in a 4-PAM transmission system that uses voltage-based output drivers, the four different signal levels are represented by different voltage values. For example, the four different voltage levels may be identified as 0v, 1v, 2v, and 3v. These drivers are usually connected to a transmission line environment that presents an effective resistance or impedance to the output driver. This impedance causes the output voltage to change if a current driver output changes, and causes the output current to change if the value of the voltage driver changes.
These multi-level signals can be used in transmission systems that contain either differential pairs of signals, or a single-ended signal referenced to ground. In a transmission system utilizing many single-ended multi-level current-based transmitters, it is desirable to maintain the total signal current required to transmit a byte of data (or code word) at a relatively constant current level in comparison to other bytes of data (or code words). If the signal current fluctuates greatly from one byte to the next, the change in current flows through the power supply connections and causes noise on the integrated circuit. This current change occurs when using either voltage drivers or current drivers. The noise on the power supply increases in systems that have a high data transmission rate and fast edge rate transmitters. This noise on the power supply degrades the voltage margin of a particular transmission.
The question of coding a number to keep the output current constant (DC Balanced) has been studied for binary signals and various codes have been developed for these binary signals. The IBM 8b-10b code is an example of this type of code. The situation for multi-level signals is different than binary signals, and thus requires a different approach to coding.
An improved architecture and method described herein addresses these and other problems by encoding multi-level signals to minimize the current fluctuations between successive data transmissions.